{
  "cells": [
    {
      "attachments": {},
      "cell_type": "markdown",
      "metadata": {},
      "source": [
        "# Load & Process Data With Dataset Pipeline\n",
        "\n",
        "[![View Source On Gitee](https://mindspore-website.obs.cn-north-4.myhuaweicloud.com/website-images/master/resource/_static/logo_source_en.svg)](https://gitee.com/mindspore/mindspore/blob/master/docs/api/api_python_en/samples/dataset/dataset_gallery.ipynb)\n",
        "\n",
        "This example illustrates the various usages available in the [mindspore.dataset](https://www.mindspore.cn/docs/en/master/api_python/mindspore.dataset.html) module."
      ]
    },
    {
      "attachments": {},
      "cell_type": "markdown",
      "metadata": {},
      "source": [
        "## Basic Environment Preparation"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 1,
      "metadata": {
        "collapsed": false
      },
      "outputs": [
        {
          "name": "stdout",
          "output_type": "stream",
          "text": [
            "Downloading data from https://mindspore-website.obs.cn-north-4.myhuaweicloud.com/notebook/datasets/MNIST_Data.zip (10.3 MB)\n",
            "\n",
            "file_sizes: 100%|██████████████████████████| 10.8M/10.8M [00:00<00:00, 10.9MB/s]\n",
            "Extracting zip file...\n",
            "Successfully downloaded / unzipped to ./\n",
            "Downloading data from https://mindspore-website.obs.cn-north-4.myhuaweicloud.com/notebook/datasets/cifar-10-binary.tar.gz (162.2 MB)\n",
            "\n",
            "file_sizes: 100%|████████████████████████████| 170M/170M [00:13<00:00, 12.9MB/s]\n",
            "Extracting tar.gz file...\n",
            "Successfully downloaded / unzipped to ./\n"
          ]
        }
      ],
      "source": [
        "from download import download\n",
        "import matplotlib.pyplot as plt\n",
        "\n",
        "import mindspore.dataset as ds\n",
        "import mindspore.dataset.vision as vision\n",
        "\n",
        "# Download opensource datasets\n",
        "mnist_url = \"https://mindspore-website.obs.cn-north-4.myhuaweicloud.com/notebook/datasets/MNIST_Data.zip\"\n",
        "download(mnist_url, \"./\", kind=\"zip\", replace=True)\n",
        "\n",
        "cifar10_url = \"https://mindspore-website.obs.cn-north-4.myhuaweicloud.com/notebook/datasets/cifar-10-binary.tar.gz\"\n",
        "download(cifar10_url, \"./\", kind=\"tar.gz\", replace=True)\n",
        "\n",
        "# Env set for randomness and prepare plot function\n",
        "ds.config.set_seed(0)\n",
        "\n",
        "def plot(imgs, first_origin=None):\n",
        "    num_rows = 1\n",
        "    num_cols = len(imgs)\n",
        "\n",
        "    _, axs = plt.subplots(nrows=num_rows, ncols=num_cols, squeeze=False)\n",
        "    for idx, img in enumerate(imgs):\n",
        "        ax = axs[0, idx]\n",
        "        ax.imshow(img.asnumpy())\n",
        "        ax.set(xticklabels=[], yticklabels=[], xticks=[], yticks=[])\n",
        "\n",
        "    if first_origin:\n",
        "        axs[0, 0].set(title='Original image')\n",
        "        axs[0, 0].title.set_size(8)\n",
        "    plt.tight_layout()"
      ]
    },
    {
      "attachments": {},
      "cell_type": "markdown",
      "metadata": {},
      "source": [
        "## Load Open Source Datasets\n",
        "\n",
        "Load MNIST/Cifar10 dataset with [mindspore.dataset.MnistDataset](https://mindspore.cn/docs/en/master/api_python/dataset/mindspore.dataset.MnistDataset.html#mindspore.dataset.MnistDataset) and [mindspore.dataset.Cifar10Dataset](https://mindspore.cn/docs/en/master/api_python/dataset/mindspore.dataset.Cifar10Dataset.html#mindspore.dataset.Cifar10Dataset).\n",
        "\n",
        "Examples shows how to load dataset files and show the content.\n",
        "\n",
        "### Load MNIST Dataset"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 2,
      "metadata": {
        "collapsed": false
      },
      "outputs": [
        {
          "name": "stdout",
          "output_type": "stream",
          "text": [
            "['vision_gallery.ipynb', 'MNIST_Data', 'text_gallery.ipynb', 'imageset', 'cifar-10-batches-bin', 'audio_gallery.ipynb', 'dataset_gallery.ipynb']\n",
            "image shape (28, 28, 1) label shape ()\n",
            "image shape (28, 28, 1) label shape ()\n",
            "image shape (28, 28, 1) label shape ()\n",
            "image shape (28, 28, 1) label shape ()\n",
            "image shape (28, 28, 1) label shape ()\n",
            "image shape (28, 28, 1) label shape ()\n"
          ]
        },
        {
          "data": {
            "image/png": "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",
            "text/plain": [
              "<Figure size 432x288 with 6 Axes>"
            ]
          },
          "metadata": {},
          "output_type": "display_data"
        }
      ],
      "source": [
        "import os\n",
        "\n",
        "# Show the directory\n",
        "print(os.listdir())\n",
        "\n",
        "# Load MNIST dataset\n",
        "mnist_dataset = ds.MnistDataset(\"MNIST_Data/train\")\n",
        "\n",
        "# Iter the dataset to collect 5 samples\n",
        "images = []\n",
        "for image, label in mnist_dataset:\n",
        "    print(\"image shape\", image.shape, \"label shape\", label.shape)\n",
        "    images.append(image)\n",
        "    if len(images) > 5:\n",
        "        break\n",
        "\n",
        "plot(images)"
      ]
    },
    {
      "attachments": {},
      "cell_type": "markdown",
      "metadata": {},
      "source": [
        "### Load Cifar Dataset"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 3,
      "metadata": {},
      "outputs": [
        {
          "name": "stdout",
          "output_type": "stream",
          "text": [
            "['vision_gallery.ipynb', 'MNIST_Data', 'text_gallery.ipynb', 'imageset', 'cifar-10-batches-bin', 'audio_gallery.ipynb', 'dataset_gallery.ipynb']\n",
            "image shape (32, 32, 3) label shape ()\n",
            "image shape (32, 32, 3) label shape ()\n",
            "image shape (32, 32, 3) label shape ()\n",
            "image shape (32, 32, 3) label shape ()\n",
            "image shape (32, 32, 3) label shape ()\n",
            "image shape (32, 32, 3) label shape ()\n"
          ]
        },
        {
          "data": {
            "image/png": "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",
            "text/plain": [
              "<Figure size 432x288 with 6 Axes>"
            ]
          },
          "metadata": {},
          "output_type": "display_data"
        }
      ],
      "source": [
        "import os\n",
        "\n",
        "# Show the directory\n",
        "print(os.listdir())\n",
        "\n",
        "# Load Cifar10 dataset\n",
        "cifar_dataset = ds.Cifar10Dataset(\"cifar-10-batches-bin\")\n",
        "\n",
        "# Iter the dataset to collect 5 samples\n",
        "images = []\n",
        "for image in cifar_dataset:\n",
        "    print(\"image shape\", image[0].shape, \"label shape\", image[1].shape)\n",
        "    images.append(image[0])\n",
        "    if len(images) > 5:\n",
        "        break\n",
        "\n",
        "plot(images)"
      ]
    },
    {
      "attachments": {},
      "cell_type": "markdown",
      "metadata": {},
      "source": [
        "### Load Dataset In Folders\n",
        "\n",
        "For ImageNet dataset or other datasets with similar structure, it is suggest to use [mindspore.dataset.ImageFolderDataset](https://mindspore.cn/docs/en/master/api_python/dataset/mindspore.dataset.ImageFolderDataset.html#mindspore.dataset.ImageFolderDataset) to load files into dataset pipeline.\n",
        "\n",
        "```text\n",
        "Structure of ImageNet dataset:\n",
        "\n",
        "/path/to/ImageNet2012/\n",
        "├── train\n",
        "│   ├── n01440764\n",
        "|   |   ├── 000000000001.jpg\n",
        "|   |   ├── 000000000002.jpg\n",
        "|   |   ├── ...\n",
        "│   ├── n01484850\n",
        "|   |   ├── 000000000001.jpg\n",
        "|   |   ├── 000000000002.jpg\n",
        "|   |   ├── ...\n",
        "│   ├── n01494475\n",
        "│   └── ...\n",
        "└── val\n",
        "    ├── n11879895\n",
        "    └── ...\n",
        "```\n",
        "\n",
        "This example shows how to load dataset files in tree folder structure, the code will download imageset folders with following structure and load it.\n",
        "\n",
        "```text\n",
        "imageset/\n",
        "├── cat\n",
        "│   ├── cat_0.jpg\n",
        "│   ├── cat_1.jpg\n",
        "│   └── cat_2.jpg\n",
        "├── fish\n",
        "│   ├── fish_0.jpg\n",
        "│   ├── fish_1.jpg\n",
        "│   ├── fish_2.jpg\n",
        "│   └── fish_3.jpg\n",
        "├── fruits\n",
        "│   ├── fruits_0.jpg\n",
        "│   ├── fruits_1.jpg\n",
        "│   └── fruits_2.jpg\n",
        "├── plane\n",
        "│   ├── plane_0.jpg\n",
        "│   ├── plane_1.jpg\n",
        "│   └── plane_2.jpg\n",
        "└── tree\n",
        "    ├── tree_0.jpg\n",
        "    ├── tree_1.jpg\n",
        "    └── tree_2.jpg\n",
        "```"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 4,
      "metadata": {},
      "outputs": [
        {
          "name": "stdout",
          "output_type": "stream",
          "text": [
            "Downloading data from https://mindspore-website.obs.cn-north-4.myhuaweicloud.com/notebook/datasets/imageset.zip (45 kB)\n",
            "\n",
            "file_sizes: 100%|███████████████████████████| 45.7k/45.7k [00:00<00:00, 958kB/s]\n",
            "Extracting zip file...\n",
            "Successfully downloaded / unzipped to ./\n",
            "image shape (64, 64, 3) label 0\n",
            "image shape (64, 64, 3) label 4\n",
            "image shape (64, 64, 3) label 0\n",
            "image shape (64, 64, 3) label 1\n",
            "image shape (64, 64, 3) label 2\n",
            "image shape (64, 64, 3) label 3\n",
            "image shape (64, 64, 3) label 1\n",
            "image shape (64, 64, 3) label 3\n",
            "image shape (64, 64, 3) label 1\n",
            "image shape (64, 64, 3) label 3\n",
            "image shape (64, 64, 3) label 1\n",
            "image shape (64, 64, 3) label 4\n",
            "image shape (64, 64, 3) label 4\n",
            "image shape (64, 64, 3) label 0\n",
            "image shape (64, 64, 3) label 2\n",
            "image shape (64, 64, 3) label 2\n"
          ]
        },
        {
          "data": {
            "image/png": "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",
            "text/plain": [
              "<Figure size 432x288 with 5 Axes>"
            ]
          },
          "metadata": {},
          "output_type": "display_data"
        }
      ],
      "source": [
        "# Download a small image set as example\n",
        "url = \"https://mindspore-website.obs.cn-north-4.myhuaweicloud.com/notebook/datasets/imageset.zip\"\n",
        "download(url, \"./\", kind=\"zip\", replace=True)\n",
        "\n",
        "# There are 5 classes in the image folder.\n",
        "os.listdir(\"./imageset\")\n",
        "\n",
        "# Pass the image folder path to ImageFolderDataset, like \"/path/to/ImageNet2012/train\"\n",
        "imagenet_dataset = ds.ImageFolderDataset(\"./imageset\", decode=True)\n",
        "\n",
        "# Iter the dataset to get outputs\n",
        "images = []\n",
        "for image, label in imagenet_dataset:\n",
        "    images.append(image)\n",
        "    print(\"image shape\", image.shape, \"label\", label)\n",
        "\n",
        "plot(images[:5], False)"
      ]
    },
    {
      "attachments": {},
      "cell_type": "markdown",
      "metadata": {},
      "source": [
        "## Load Customized Dataset\n",
        "\n",
        "`mindspore.dataset` module provides the loading APIs for some common datasets and standard format datasets.\n",
        "\n",
        "For those datasets that MindSpore does not support yet, [mindspore.dataset.GeneratorDataset](https://mindspore.cn/docs/en/master/api_python/dataset/mindspore.dataset.GeneratorDataset.html#mindspore.dataset.GeneratorDataset) provides ways for users to load and process their data manually.\n",
        "\n",
        "`GeneratorDataset` supports constructing customized datasets from random-accessible objects, iterable objects and Python generator.\n",
        "\n",
        "### Random-accessible Dataset\n",
        "\n",
        "A Random-accessible dataset is one that implements the `__getitem__` and `__len__` methods, which represents a map from indices/keys to data samples.\n",
        "\n",
        "For example, when access a dataset with `dataset[idx]`, it should read the idx-th data inside the dataset content."
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 5,
      "metadata": {
        "collapsed": false
      },
      "outputs": [
        {
          "name": "stdout",
          "output_type": "stream",
          "text": [
            "Access with dataset[0] 0\n",
            "RandomAccess dataset: [Tensor(shape=[], dtype=Int64, value= 2)]\n",
            "RandomAccess dataset: [Tensor(shape=[], dtype=Int64, value= 4)]\n",
            "RandomAccess dataset: [Tensor(shape=[], dtype=Int64, value= 3)]\n",
            "RandomAccess dataset: [Tensor(shape=[], dtype=Int64, value= 0)]\n",
            "RandomAccess dataset: [Tensor(shape=[], dtype=Int64, value= 1)]\n"
          ]
        }
      ],
      "source": [
        "# Define randomaccessable class to load and process data\n",
        "class RandomAccessDataset():\n",
        "    def __init__(self):\n",
        "        '''init the class object to hold the data'''\n",
        "        self.data = [i for i in range(5)]\n",
        "    def __getitem__(self, id):\n",
        "        '''overrode the getitem method to support random access'''\n",
        "        return self.data[id]\n",
        "    def __len__(self):\n",
        "        '''specify the length of data'''\n",
        "        return len(self.data)\n",
        "\n",
        "dataset = RandomAccessDataset()\n",
        "print(\"Access with dataset[0]\", dataset[0])\n",
        "\n",
        "# Create a dataloader\n",
        "dataloader1 = ds.GeneratorDataset(RandomAccessDataset(), column_names=[\"data\"])\n",
        "\n",
        "# Iter the dataset and check if the data is created successful\n",
        "for data in dataloader1:\n",
        "    print(\"RandomAccess dataset:\", data)"
      ]
    },
    {
      "attachments": {},
      "cell_type": "markdown",
      "metadata": {},
      "source": [
        "### Iterable Dataset\n",
        "\n",
        "An iterable dataset is one that implements the `__iter__` and `__next__` methods, which represents an iterator to return data samples gradually. This type of datasets is suitable for cases where random access are expensive or forbidden.\n",
        "\n",
        "For example, when access a dataset with `iter(dataset)`, it should return a stream of data from a database or a remote server."
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 6,
      "metadata": {},
      "outputs": [
        {
          "name": "stdout",
          "output_type": "stream",
          "text": [
            "Iter dataset with next(iter(dataset)) 0\n",
            "Iterable dataset: [Tensor(shape=[], dtype=Int64, value= 0)]\n",
            "Iterable dataset: [Tensor(shape=[], dtype=Int64, value= 1)]\n",
            "Iterable dataset: [Tensor(shape=[], dtype=Int64, value= 2)]\n",
            "Iterable dataset: [Tensor(shape=[], dtype=Int64, value= 3)]\n",
            "Iterable dataset: [Tensor(shape=[], dtype=Int64, value= 4)]\n"
          ]
        }
      ],
      "source": [
        "# Define iterable class to load and process data\n",
        "class IterableDataset():\n",
        "    def __init__(self, start, end):\n",
        "        '''init the class object to hold the data'''\n",
        "        self.start = start\n",
        "        self.end = end\n",
        "    def __next__(self):\n",
        "        '''iter one data and return'''\n",
        "        return next(self.data)\n",
        "    def __iter__(self):\n",
        "        '''reset the iter'''\n",
        "        self.data = iter(range(self.start, self.end))\n",
        "        return self\n",
        "\n",
        "dataset = IterableDataset(0, 5)\n",
        "print(\"Iter dataset with next(iter(dataset))\", next(iter(dataset)))\n",
        "\n",
        "# Create a dataloader\n",
        "dataloader2 = ds.GeneratorDataset(IterableDataset(0, 5), column_names=[\"data\"])\n",
        "\n",
        "# Iter the dataset and check if the data is created successful\n",
        "for data in dataloader2:\n",
        "    print(\"Iterable dataset:\", data)"
      ]
    },
    {
      "attachments": {},
      "cell_type": "markdown",
      "metadata": {},
      "source": [
        "### Generator\n",
        "\n",
        "Generator also belongs to iterable dataset type, it can be a Python generator to return data until the generator throws a StopIteration exception."
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 7,
      "metadata": {},
      "outputs": [
        {
          "name": "stdout",
          "output_type": "stream",
          "text": [
            "Generator [Tensor(shape=[], dtype=Int64, value= 3)]\n",
            "Generator [Tensor(shape=[], dtype=Int64, value= 4)]\n",
            "Generator [Tensor(shape=[], dtype=Int64, value= 5)]\n"
          ]
        }
      ],
      "source": [
        "# Define a generator\n",
        "def my_generator(start, end):\n",
        "    for i in range(start, end):\n",
        "        yield i\n",
        "\n",
        "# Since a generator instance can be only iterated once, we need to wrap it by lambda to generate multiple instances\n",
        "dataloader3 = ds.GeneratorDataset(source=lambda: my_generator(3, 6), column_names=[\"data\"])\n",
        "\n",
        "for data in dataloader3:\n",
        "    print(\"Generator\", data)"
      ]
    },
    {
      "attachments": {},
      "cell_type": "markdown",
      "metadata": {},
      "source": [
        "## Get Attributes Of Dataset\n",
        "\n",
        "Once a dataset is defined, it is convenient to get attributes of it through \"getter\" APIs.\n",
        "\n",
        "Example shows how to get the basic attributes of dataset such as types, shapes, sizes, e.g."
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 8,
      "metadata": {
        "collapsed": false
      },
      "outputs": [
        {
          "name": "stdout",
          "output_type": "stream",
          "text": [
            "length of cifar10 dataset: 60000\n",
            "length of cifar10 dataset: 60000\n",
            "data columns of cifar10 dataset: ['image', 'label']\n",
            "shapes of cifar10 dataset sample: [[32, 32, 3], []]\n",
            "types of cifar10 dataset sample: [dtype('uint8'), dtype('uint32')]\n"
          ]
        }
      ],
      "source": [
        "# Take Cifar dataset as example\n",
        "cifar_dataset = ds.Cifar10Dataset(\"cifar-10-batches-bin\")\n",
        "\n",
        "# Get how many samples in the dataset\n",
        "print(\"length of cifar10 dataset:\", len(cifar_dataset))\n",
        "print(\"length of cifar10 dataset:\", cifar_dataset.get_dataset_size())\n",
        "\n",
        "# Get the data columns in dataset\n",
        "print(\"data columns of cifar10 dataset:\", cifar_dataset.get_col_names())\n",
        "\n",
        "# Get the shapes of first sample, shown in data column order\n",
        "print(\"shapes of cifar10 dataset sample:\", cifar_dataset.output_shapes())\n",
        "\n",
        "# Get the types of first sample, shown in data column order\n",
        "print(\"types of cifar10 dataset sample:\", cifar_dataset.output_types())"
      ]
    },
    {
      "attachments": {},
      "cell_type": "markdown",
      "metadata": {},
      "source": [
        "## Apply Transforms On Dataset\n",
        "\n",
        "A source dataset object only represents the origin state of dataset which means that it has not been processed by any transforms.\n",
        "\n",
        "Generally speaking, we need to apply some augmentations on dataset to make it fit train."
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 9,
      "metadata": {
        "collapsed": false
      },
      "outputs": [
        {
          "name": "stdout",
          "output_type": "stream",
          "text": [
            "Apply batch operation...\n",
            "batched_image (5, 32, 32, 3) batched_label (5,)\n",
            "Apply take operation...\n",
            "Take 3 batches, 1/3 batch: (5, 32, 32, 3) (5,)\n",
            "Take 3 batches, 2/3 batch: (5, 32, 32, 3) (5,)\n",
            "Take 3 batches, 3/3 batch: (5, 32, 32, 3) (5,)\n",
            "Apply map operation...\n",
            "Map transforms on 3 batches, 1/3 batch: (5, 16, 16, 3) (5,)\n",
            "Map transforms on 3 batches, 2/3 batch: (5, 16, 16, 3) (5,)\n",
            "Map transforms on 3 batches, 3/3 batch: (5, 16, 16, 3) (5,)\n"
          ]
        }
      ],
      "source": [
        "# Take Cifar dataset as example\n",
        "cifar_dataset = ds.Cifar10Dataset(\"cifar-10-batches-bin\")\n",
        "\n",
        "# Apply batch on dataset, then we got a new sample with 5 image batched together\n",
        "cifar_dataset = cifar_dataset.batch(5)\n",
        "\n",
        "batched_image, batched_label = next(iter(cifar_dataset))\n",
        "print(\"Apply batch operation...\")\n",
        "print(\"batched_image\", batched_image.shape, \"batched_label\", batched_label.shape)\n",
        "\n",
        "# Take 3 batches from dataset\n",
        "print(\"Apply take operation...\")\n",
        "cifar_dataset = cifar_dataset.take(3)\n",
        "\n",
        "for i, (image, label) in enumerate(cifar_dataset):\n",
        "    print(f\"Take 3 batches, {i+1}/3 batch:\", image.shape, label.shape)\n",
        "\n",
        "# Map augmentations on each images in batch\n",
        "print(\"Apply map operation...\")\n",
        "\n",
        "## option 1. use transform as function call, input_columns means apply transform on \"image\" column\n",
        "def augment(imgs):\n",
        "    resize = vision.Resize(size=(16, 16))\n",
        "    return resize(imgs)\n",
        "cifar_dataset = cifar_dataset.map(operations=augment, input_columns=[\"image\"])\n",
        "\n",
        "## option 2. embed transform into dataset pipeline, input_columns means apply transform on \"image\" column\n",
        "cifar_dataset = cifar_dataset.map(operations=vision.Resize(size=(16, 16)), input_columns=[\"image\"])\n",
        "\n",
        "for i, (image, label) in enumerate(cifar_dataset):\n",
        "    print(f\"Map transforms on 3 batches, {i+1}/3 batch:\", image.shape, label.shape)"
      ]
    }
  ],
  "metadata": {
    "kernelspec": {
      "display_name": "Python 3",
      "language": "python",
      "name": "python3"
    },
    "language_info": {
      "codemirror_mode": {
        "name": "ipython",
        "version": 3
      },
      "file_extension": ".py",
      "mimetype": "text/x-python",
      "name": "python",
      "nbconvert_exporter": "python",
      "pygments_lexer": "ipython3",
      "version": "3.7.6"
    },
    "vscode": {
      "interpreter": {
        "hash": "9f0efe8a0d8ccef1406a56130f5ab5480567fb275f7fbf51bbc40aede97503df"
      }
    }
  },
  "nbformat": 4,
  "nbformat_minor": 0
}
